{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "73bd968b-d970-4a05-94ef-4e7abf990827",
   "metadata": {},
   "source": [
    "Chapter 15\n",
    "\n",
    "# 一阶、二阶导数\n",
    "Book_3《数学要素》 | 鸢尾花书：从加减乘除到机器学习 (第二版)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6b479570-4877-49f6-b4f1-56314f90d3be",
   "metadata": {},
   "source": [
    "这段代码定义了函数 $f(x) = x^2 - 2$，并计算了该函数的第一和第二阶导数，之后通过图像分别展示了原函数及其导数随 $x$ 的变化趋势。\n",
    "\n",
    "具体过程如下：\n",
    "\n",
    "1. **定义函数**：原函数 $f(x) = x^2 - 2$ 是一个简单的二次函数，代码选取 $x$ 的范围为 $[-2, 2]$。通过`lambdify`将符号化函数转化为数值函数，以便对 $x$ 取值进行逐点计算，从而生成 $f(x)$ 的数值数组。\n",
    "\n",
    "2. **计算导数**：\n",
    "   - **一阶导数**：代码首先对 $f(x)$ 求导，得到 $f'(x) = 2x$，这表示 $f(x)$ 的斜率或瞬时变化率。通过`lambdify`将一阶导数也转为数值函数，以便后续绘图。\n",
    "   - **二阶导数**：进一步对 $f(x)$ 的一阶导数求导，得到 $f''(x) = 2$。该常数值表示二次函数 $f(x)$ 的曲率，即在整个定义域内保持凹向上的特性。\n",
    "\n",
    "3. **绘制图像**：\n",
    "   - 第一幅图展示了原函数 $f(x)$ 的曲线图，标注了 $x = 0$ 和 $y = 0$ 的对称轴，以便观察函数的整体形状。\n",
    "   - 第二幅图展示了一阶导数 $f'(x)$ 的曲线图，显示函数斜率随 $x$ 的变化关系。根据 $f'(x) = 2x$，可以看出 $f(x)$ 的增长速率在 $x > 0$ 时为正，在 $x < 0$ 时为负。\n",
    "   - 第三幅图展示了二阶导数 $f''(x)$ 的曲线图。由于 $f''(x)$ 恒为常数 $2$，其图像为一条平行于 $x$ 轴的水平线，表明 $f(x)$ 的凹性不变。\n",
    "\n",
    "通过这些图像，代码直观展示了函数 $f(x)$ 及其导数的变化，帮助理解函数的曲率和单调性等性质。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fef7f8e9-4c57-406b-bed1-3926bc9202fc",
   "metadata": {},
   "source": [
    "## 导入包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "0be92b88-8065-4bed-af6b-8fb8cce6c1de",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sympy import latex, lambdify, diff, sin  # 导入SymPy中的latex格式化、数值化、求导函数\n",
    "from sympy.abc import x  # 导入符号变量x\n",
    "import numpy as np\n",
    "from matplotlib import pyplot as plt  # 导入NumPy和Matplotlib用于数值计算和绘图"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dd54cb20-8278-40bc-b14d-ad4235c67d31",
   "metadata": {},
   "source": [
    "## 定义原函数 f(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "a102b2f3-dc1f-4aec-8853-328bf3771676",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle x^{2} - 2$"
      ],
      "text/plain": [
       "x**2 - 2"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f_x = x**2 - 2  # 定义函数表达式 f(x) = x^2 - 2\n",
    "f_x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "90807bdc-7d63-46ba-9d75-db970764b54b",
   "metadata": {},
   "outputs": [],
   "source": [
    "x_array = np.linspace(-2, 2, 100)  # 定义x的范围，从-2到2，生成100个点\n",
    "f_x_fcn = lambdify(x, f_x)  # 将符号函数f(x)转换为数值函数\n",
    "f_x_array = f_x_fcn(x_array)  # 计算每个x对应的f(x)值"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d5d645be-9559-4def-8e85-5f2e9cf2268d",
   "metadata": {},
   "source": [
    "## 计算一阶导数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "05b30da2-c5ab-47e9-99fe-663197fac2d6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 2 x$"
      ],
      "text/plain": [
       "2*x"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f_x_1_diff = diff(f_x, x)  # 对f(x)进行一阶求导，得到f'(x) = 2x\n",
    "f_x_1_diff  # 打印一阶导数的表达式"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "e39ecade-896d-423b-ab3c-d9117666e9ea",
   "metadata": {},
   "outputs": [],
   "source": [
    "f_x_1_diff_fcn = lambdify(x, f_x_1_diff)  # 将一阶导数转换为数值函数\n",
    "f_x_1_diff_array = f_x_1_diff_fcn(x_array)  # 计算每个x对应的一阶导数值"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "950f6070-e4c5-4d6c-9b48-770231cafb21",
   "metadata": {},
   "source": [
    "## 计算二阶导数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "d7fe5229-5986-45d6-afb1-c7ef9428880a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 2$"
      ],
      "text/plain": [
       "2"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f_x_2_diff = diff(f_x, x, 2)  # 对f(x)进行二阶求导，得到f''(x) = 2\n",
    "f_x_2_diff  # 打印二阶导数的表达式"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "d7321ef5-dcaa-4da5-bbaf-3b79dbbec0bd",
   "metadata": {},
   "outputs": [],
   "source": [
    "f_x_2_diff_fcn = lambdify(x, f_x_2_diff)  # 将二阶导数转换为数值函数\n",
    "f_x_2_diff_array = f_x_2_diff_fcn(x_array)  # 计算每个x对应的二阶导数值\n",
    "f_x_2_diff_array = f_x_2_diff_array + x_array * 0  # 确保数组形状与x_array一致"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8d7dfe3f-8a51-46cd-802a-77303378a080",
   "metadata": {},
   "source": [
    "## 绘制原函数及其一阶和二阶导数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "9c2c51ed-2f4d-44e7-8aa1-7dc1e7a7027a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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VVVVoaqqqt02gwcPhv7M5X3Kysowa9YsTJo0Ca+99hri4jr/CdhisSAlJQUnT56M6Rm7ykq5iG16enqEexJZzCGIWUjMQWIOEnOQmINUWVmJ9PR0JCUlhfTELcUVdl1RWlqKWbNmoaCgAG+++WaXFws8duwYhg0bFqbeERERkdKZzeaQFrmK2xXbWWVlZZg5cyYGDhyIP/7xj4FPEACQlZXVqcdoPNGipKQEJpOpg9bK1XisYazPXDKHIGYhMQeJOUjMQWIOUmMOoV47N2YLuy+++AI//PADfvjhBwwYMKDZzzo7idm429ZkMsX04GyUnJzMHMAcmmIWEnOQmIPEHCTmIIV6/cy+cUpVGNx8880QQrT6RURERNQXxWxhR0RERKQ0LOx6QKfTYcmSJTG/BApzkJhDELOQmIPEHCTmIDEHKVw5xPRZsURERERKwhk7IiIiIoVgYUdERESkECzsiIiIiBSChR0RERGRQrCwIyIiIlIIFnZERERECsHCjoiIiEghWNgRERERKQQLOyIiIiKFYGFHREREpBAs7IiIiIgUgoUdERERkUKwsCMiIiJSCBZ2RERERArBwo6IiIhIIVjYERERESkECzsiIiIihWBhR0RERKQQLOyIiIiIFIKFHREREZFCsLAjIiIiUggWdkREREQKwcKOiIiISCFY2BEREREpBAs7IiIiIoVgYUdERESkECzsiIiIiBSChR0RERGRQrCwIyIiIlIIFnZERERECsHCjoiIiEghWNgRERERKQQLOyIiIiKFYGFHREREpBAs7IiIiIgUgoUdERERkUKwsCMiIiJSCBZ2RERERArBwo6IiIhIIVjYERERESkECzsiIiIihWBhR0RERKQQLOyIiIiIFIKFHREREZFCsLAjIiIiUggWdkREREQKwcKOiIiISCFY2BEREREpBAs7IiIiIoVgYUdERESkECzsiCim/O///i9SUlJw4MCBSHeFiCjkVEIIEelOEBH1hp07d+KSSy7BRx99hIsvvjjS3SEiCjnO2BFRTKipqcE111yDl156iUUdESkWZ+yIiIiIFIIzdkREREQKwcKOiIiISCFY2BGRolmtVixatAi5ubnQaDQYOnQoHnnkEYwaNQp+v7/Lj7dq1Srk5ubCZrOFobfNbdiwAbfeeivy8/ORkJCA3NxczJ8/H3v27An7cxNR38Rj7IhI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2BkPXc1BqePhrrvuEiaTSWzatKlZrWC32wNtwjUmWNh1werVqwWAVr+aAiBWr14d+N7v94slS5aIrKwsodPpxIwZM8SBAwd6ufehddNNN7Waw8aNGwNtmuZgt9vF7NmzRXp6utBqtWLgwIHipptuEiUlJZF5ASHS1RyEUOZ4qK6uFjfccINISkoSSUlJ4oYbbmixfIESx8Of//xnMWjQIBEfHy/Gjx/fbCmDm266SVx00UXN2m/atEmMGzdOxMfHi8GDB4sXXnihl3scHl3J4YknnhDDhg0Ter1epKamimnTpolPP/00Ar0OrcZlO87+uummm4QQsTMeupqDUsdDW7VC078F4RoTqjMdICIiIqI+jmfFEhERESkECzsiIiIihWBhR0RERKQQLOyIiIiIFIKFHREREZFCsLAjIiIiUggWdkREREQKwcKOiIiISCFY2BEREREpBAs7IiIiIoVgYUdERESkECzsiIhC6O2334Zer0dpaWngtttvvx1jxoyBxWKJYM+IKBaohBAi0p0gIlIKIQTGjh2L6dOn4/nnn8eyZcvw6quvYseOHcjNzY1094hI4TSR7gARkZKoVCosX74cP/nJT5CTk4Nnn30WW7ZsYVFHRL2CM3ZERGEwfvx4HDx4EF988QUuuuiiSHeHiGIEj7EjIgqxzz//HIcPH4bP50NmZmaku0NEMYQzdkREIfT1119j5syZ+POf/4x33nkHRqMR77//fqS7RUQxgsfYERGFSHFxMebNm4f7778fCxcuxKhRozBhwgTs2bMHBQUFke4eEcUAztgREYVATU0NLrzwQsyYMQMvvfRS4Pb58+fD5XJh3bp1EewdEcUKFnZERERECsGTJ4iIiIgUgoUdERERkUKwsCMiIiJSCBZ2RERERArBwo6IiIhIIVjYERERESkECzsiIiIihWBhR0RERKQQLOyIiIiIFIKFHREREZFCsLAjIiIiUggWdkREREQKwcKOiIiISCFY2BEREREpBAs7IiIiIoVgYUdERESkECzsiIiIiBSChR0RERGRQrCwIyIiIlIIFnZEFBN+9atf4Y033oDL5cItt9yCvLw8JCcnY/Lkydi2bRsAwOv14vzzz8fp06cj3Fsiou5hYUdEildRUYFPPvkE1113HbxeL4YMGYKtW7eirq4Od911F6688krY7XZoNBrcdtttePLJJyPd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7IiIiIgUgoUdERERkUKwsCMiIiJSCBZ2RERERArBwo6IiIhIIVjYERERESkECzsiIiIihWBhR0RERKQQLOyIiIiIFIKFHRFRCL399tvQ6/UoLS0N3Hb77bdjzJgxsFgsEewZEcUClRBCRLoTRERKIYTA2LFjMX36dDz//PNYtmwZXn31VezYsQO5ubmR7h4RKZwm0h0gIlISlUqF5cuX4yc/+QlycnLw7LPPYsuWLSzqiKhXcMaOiCgMxo8fj4MHD+KLL77ARRddFOnuEFGM4DF2REQh9vnnn+Pw4cPw+XzIzMyMdHeIKIZwxo6IKIS+/vprzJw5E3/+85/xzjvvwGg04v333490t4goRvAYOyKiECkuLsa8efNw//33Y+HChRg1ahQmTJiAPXv2oKCgINLdI6IYwBk7IqIQqKmpwYUXXogZM2bgpZdeCtw+f/58uFwurFu3LoK9I6JYwcKOiIiISCF48gQRERGRQrCwIyIiIlIIFnZERERECsHCjoiIiEghWNgRERERKQQLOyIiIiKFYGFHREREpBAs7IiIiIgUgoUdERERkUKwsCMiIiJSCBZ2RERERArx/wHHfS2C+TNChwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(3, 1)  # 创建绘图窗口，包含三个子图用于绘制f(x)、f'(x)和f''(x)\n",
    "\n",
    "# 绘制原函数 f(x)\n",
    "ax[0].plot(x_array, f_x_array, linewidth=1.5)  # 绘制f(x)曲线\n",
    "ax[0].hlines(y=0, xmin=x_array.min(), xmax=x_array.max(), color='r', linestyle='--')  # 水平线y=0，表示x轴\n",
    "ax[0].vlines(x=0, ymin=f_x_array.min(), ymax=f_x_array.max(), color='r', linestyle='--')  # 垂直线x=0\n",
    "ax[0].set_title('$f(x) = %s$' % latex(f_x))  # 标题显示函数表达式\n",
    "ax[0].set_ylabel('$f(x)$')  # 设置y轴标签\n",
    "ax[0].set_xlim((x_array.min(), x_array.max()))  # 设置x轴范围\n",
    "ax[0].spines['right'].set_visible(False)  # 隐藏右边框\n",
    "ax[0].spines['top'].set_visible(False)  # 隐藏上边框\n",
    "ax[0].set_xticklabels([])  # 隐藏x轴刻度标签\n",
    "ax[0].grid(linestyle='--', linewidth=0.25, color=[0.5, 0.5, 0.5])  # 设置网格线\n",
    "\n",
    "# 绘制一阶导数 f'(x)\n",
    "ax[1].plot(x_array, f_x_1_diff_array, linewidth=1.5)  # 绘制f'(x)曲线\n",
    "ax[1].hlines(y=0, xmin=x_array.min(), xmax=x_array.max(), color='r', linestyle='--')  # 水平线y=0\n",
    "ax[1].vlines(x=0, ymin=f_x_1_diff_array.min(), ymax=f_x_1_diff_array.max(), color='r', linestyle='--')  # 垂直线x=0\n",
    "ax[1].set_xlabel(r\"$\\it{x}$\")  # 设置x轴标签\n",
    "ax[1].set_title(r'$f\\'(x) = %s$' % latex(f_x_1_diff))  # 标题显示一阶导数表达式\n",
    "ax[1].set_ylabel(r'$f\\'(x)$')  # 设置y轴标签\n",
    "ax[1].grid(linestyle='--', linewidth=0.25, color=[0.5, 0.5, 0.5])  # 设置网格线\n",
    "ax[1].set_xlim((x_array.min(), x_array.max()))  # 设置x轴范围\n",
    "ax[1].spines['right'].set_visible(False)  # 隐藏右边框\n",
    "ax[1].spines['top'].set_visible(False)  # 隐藏上边框\n",
    "\n",
    "# 绘制二阶导数 f''(x)\n",
    "ax[2].plot(x_array, f_x_2_diff_array, linewidth=1.5)  # 绘制f''(x)曲线\n",
    "ax[2].hlines(y=0, xmin=x_array.min(), xmax=x_array.max(), color='r', linestyle='--')  # 水平线y=0\n",
    "ax[2].vlines(x=0, ymin=f_x_2_diff_array.min(), ymax=f_x_2_diff_array.max(), color='r', linestyle='--')  # 垂直线x=0\n",
    "ax[2].set_xlabel(r\"$\\it{x}$\")  # 设置x轴标签\n",
    "ax[2].set_title(r'$f^{(2)}(x) = %s$' % latex(f_x_2_diff))  # 标题显示二阶导数表达式\n",
    "ax[2].set_ylabel(r'$f\\'\\'(x)$')  # 设置y轴标签\n",
    "ax[2].grid(linestyle='--', linewidth=0.25, color=[0.5, 0.5, 0.5])  # 设置网格线\n",
    "ax[2].set_xlim((x_array.min(), x_array.max()))  # 设置x轴范围\n",
    "ax[2].spines['right'].set_visible(False)  # 隐藏右边框\n",
    "ax[2].spines['top'].set_visible(False)  # 隐藏上边框\n",
    "\n",
    "plt.tight_layout()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ecd322f4-f919-4be2-adc3-69d28ef25e69",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
